osebx <- read_csv("https://www.netfonds.no/quotes/paperhistory.php?paper=OSEBX.OSE&csv_format=csv",
                       col_types = cols(quote_date = col_date(format = "%Y%m%d")))

osebx <- osebx %>%
select(quote_date, close) %>%
  rename(Dato = "quote_date", OSEBX = "close")

monthly_osebx <- osebx %>%
  group_by(Dato=floor_date(Dato, "month")) %>%
  summarise(OSEBX = mean(OSEBX))

osebx$Dato <- ymd(osebx$Dato)
## [1] "C"
gull$Dato <- as.Date(gull$Dato)
usd_nok$Dato <- as.Date(usd_nok$Dato)
eiendom$Dato <- as.Date(eiendom$Dato)

monthly_joined <- monthly_osebx %>%
  inner_join(gull, by = "Dato") %>% 
  inner_join(usd_nok, by = "Dato") %>%
  inner_join(monthly_eqnr, by = "Dato") %>%
  inner_join(eiendom, by = "Dato")

monthly_joined
## # A tibble: 190 x 6
##    Dato       OSEBX Gull_usd USD_NOK  EQNR nominell
##    <date>     <dbl>    <dbl>   <dbl> <dbl>    <dbl>
##  1 2003-01-01  116.     357.    6.92  55.5    100  
##  2 2003-02-01  104.     360.    7.16  52.8    101. 
##  3 2003-03-01  104.     342.    7.27  55.7    101. 
##  4 2003-04-01  111.     328.    7.00  56.4    101. 
##  5 2003-05-01  122.     355.    6.68  57.6     99.8
##  6 2003-06-01  133.     357.    7.21  61.5     99.7
##  7 2003-07-01  139.     351.    7.29  62.3    100. 
##  8 2003-08-01  149.     359.    7.51  66.7    102. 
##  9 2003-09-01  151.     379.    7.04  66.4    103. 
## 10 2003-10-01  153.     379.    7.11  66.5    104. 
## # ... with 180 more rows
full <- osebx %>%
  full_join(gull, by = "Dato") %>% 
  full_join(usd_nok, by = "Dato") %>%
  full_join(eqnr, by = "Dato") %>%
  full_join(bitcoin, by = "Dato") %>%
  full_join(eiendom, by = "Dato")

full
## # A tibble: 6,181 x 7
##    Dato       OSEBX Gull_usd USD_NOK  EQNR BTC_usd nominell
##    <date>     <dbl>    <dbl>   <dbl> <dbl>   <dbl>    <dbl>
##  1 2018-11-30  861.       NA      NA  200.      NA       NA
##  2 2018-11-29  862.       NA      NA  200.      NA       NA
##  3 2018-11-28  854.       NA      NA  199       NA       NA
##  4 2018-11-27  857.       NA      NA  200.      NA       NA
##  5 2018-11-26  853.       NA      NA  199.      NA       NA
##  6 2018-11-23  837.       NA      NA  194       NA       NA
##  7 2018-11-22  849.       NA      NA  202       NA       NA
##  8 2018-11-21  855.       NA      NA  204.      NA       NA
##  9 2018-11-20  841.       NA      NA  201.      NA       NA
## 10 2018-11-19  865.       NA      NA  205.      NA       NA
## # ... with 6,171 more rows
## # A tibble: 6 x 3
##   Dato       investering verdi
##   <date>     <fct>       <dbl>
## 1 2003-01-01 OSEBX        116.
## 2 2003-02-01 OSEBX        104.
## 3 2003-03-01 OSEBX        104.
## 4 2003-04-01 OSEBX        111.
## 5 2003-05-01 OSEBX        122.
## 6 2003-06-01 OSEBX        133.
#monthly_returns <- monthly_gathered %>%
#  group_by(investering) %>%
#  arrange(investering, Dato) %>%
#  mutate(returns = c(NA, exp(diff(log(verdi)))-1)) %>%
#  na.omit()

tidy_monthly_returns <- monthly_gathered %>%
  group_by(investering) %>%
  tq_transmute(mutate_fun = periodReturn, period = "monthly")

total_monthly_returns <- tidy_monthly_returns %>%
  mutate(cumulative.returns = cumsum(monthly.returns))

wide_monthly_returns <- tidy_monthly_returns %>%
  spread(investering, monthly.returns)

monthly_returns_xts <- as.xts(wide_monthly_returns, order.by = wide_monthly_returns$Dato)      
monthly_returns_xts <- monthly_returns_xts[,2:5] #husk å oppdatere

sd_returns <- StdDev(monthly_returns_xts)

cumsum_test <- monthly_returns_xts %>%
  cumsum() %>%
  tail(n=1)

plot(StdDev(monthly_returns_xts), cumsum_test)

ggplot(total_monthly_returns, aes(x=Dato, y = cumulative.returns, color = investering))+
  geom_line()

names(monthly_returns_xts)
## [1] "EQNR"     "nominell" "OSEBX"    "USD_NOK"
equal_weights = c(0.25, 0.25, 0.25, 0.25)
higher_stocks = c(0.4, 0.1, 0.4, 0.1)

#for some reason returns are class character 
storage.mode(monthly_returns_xts) <- "numeric"

StdDev(monthly_returns_xts, weights = equal_weights) # sd = 0.022
##            [,1]
## [1,] 0.02479017
StdDev(monthly_returns_xts, weights = higher_stocks) # sd = 0.041
##            [,1]
## [1,] 0.04027608
#Return.portfolio(monthly_returns_xts, weights = equal_weights)
sum(Return.portfolio(monthly_returns_xts, weights = equal_weights))
## [1] 1.477105
#Return.portfolio(monthly_returns_xts, weights = higher_stocks)
sum(Return.portfolio(monthly_returns_xts, weights = higher_stocks))
## [1] 1.826125

## [1] "Dato"          "styringsrente"